package com.atguigu.tree;


import org.junit.Test;

import java.util.*;

public class BSTTest {

    @Test
    public void test1(){
        BST<Integer>bst=new BST<>();
        int[]nums={5,3,6,8,4,2};
        for(int num:nums){
            bst.add(num);
        }
//        bst.preOrderNR();
//        System.out.println("-----");
//        System.out.println(bst);
//        bst.postOrder();
//        bst.inOrder();
//        System.out.println();
//        bst.inOrderNR();
        bst.levelOrder();
    }
    @Test
    public void testBSTRemoveMin() {
        BST<Integer> bst = new BST<>();
        Random random = new Random();
        List<Integer> arr = new ArrayList<>();
        int n = 10;
        for (int i = 0; i < n; i++) {
            int j = random.nextInt(10);
            arr.add(j);
            bst.add(j);
        }
        List<Integer> nums = new ArrayList<>();
        while (!bst.isEmpty()) {
            nums.add(bst.removeMax());
        }
        System.out.println(nums);
        System.out.println(arr);
    }
    @Test
    public void testBSTRemoveMax(){
        BST<Integer>bst=new BST<>();
        Random random=new Random();
        int n=1000;
        List<Integer>arr=new ArrayList<>();
        for(int i=0;i<n;i++){
            int num=random.nextInt(10000);
            arr.add(num);
            bst.add(num);
        }
        List<Integer>nums=new ArrayList<>();
        while(!bst.isEmpty()){
            nums.add(bst.removeMax());
        }
        System.out.println(arr);
        System.out.println(nums);
        for(int i=0;i<nums.size()-1;i++){
            if(nums.get(i)<nums.get(i+1)){
                throw new IllegalArgumentException("Error");
            }
        }
        System.out.println("removeMax test Completed!");
    }
    @Test
    public void testEquals(){
        BST<Integer>bst=new BST<>();
        int[]nums={5,3,6,8,4,2,6};
        for(int num:nums){
            bst.add(num);
        }
        bst.preOrder();
    }
}
